<!--
 * @Descripttion: 
 * @version: 
 * @Author: 尹鹏孝
 * @Date: 2021-12-27 16:33:31
 * @LastEditors: 尹鹏孝
 * @LastEditTime: 2021-12-28 15:13:36
-->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>算法的时间复杂度</title>
</head>

<body>
    <script>
        // 时间复杂度是随着算法的运行时间和运行时间的比例，定性描述一个算法的答题时间
        // 如何预估该程序的运行时间呢？
        // 通常会估算算法操作单元数量来代表程序的消耗时间，默认CPU的每个单元时间运行消耗的时间是相同的
        // 假设算法的问题规模为n，那么操作单元数量便用函数f(n)来表示，随着数据规模n的增大，算法执行时间的增长率和f(n)的增长率相同，这称作为算法的渐近时间复杂度，简称时间复杂度，记为 $O(f(n)$)。
        // 关于O(n), O(nlogn), O(logn), O(2 ^ n), O(n ^ 2),时间复杂度比较。
        // 从增长速度而言，2 ^ n > n ^ 2 > nlogn > n > logn>1;
        // 什么是大O？
        // 大O标识算法运行时间的上节就是极限的最大值。
        // 插入排序的时间复杂度是O(n^2)
        // 快速排序的时间复杂度是：O(n*logn)
        // 一定要时刻注意规模，使用算法并不是时间复杂度越低越好，还要考虑常数。时间复杂度是简化的了的公式，并不是确切的一个值。
        // 如果数据规模很小甚至可以用$O(n ^ 2)$的算法比$O(n)$的更合适，
        // 大O是：这里就又涉及到大O的定义，因为大O就是数据量级突破一个点且数据量级非常大的情况下所表现出的时间复杂度，这个数据量也就是常数项系数已经不起决定性作用的数据量，但是也要注意大常数，如果这个常数非常大，例如10 ^ 7 ，10 ^ 9 ，那么常数就是不得不考虑的因素了

        // log是以什么为底？
        // 可以是2可以是10可以是20：
        // 假如有两个算法的时间复杂度，分别是log以2为底n的对数和log以10为底n的对数，那么这里如果还记得高中数学的话，应该不难理解以2为底n的对数 = 以2为底10的对数 * 以10为底n的对数





    </script>
</body>

</html>